package org.flexthinker.binding.bean
{
    import mx.events.PropertyChangeEvent;

    /**
     * <code>BindingListener</code>s are registered on <code>Binding</code>s or
     * <code>BindingGroup</code>s to listen for changes to the state of <code>Binding</code>s.
     */
    public interface BindingListener
    {

        function bindingBecameBound(binding:Binding):void;

        function bindingBecameUnbound(binding:Binding):void;

        function sourceChanged(binding:Binding, event:PropertyChangeEvent):void;

        function synced(binding:Binding):void;

        function syncFailed(binding:Binding, failure:SyncFailure):void;

        function targetChanged(binding:Binding, event:PropertyChangeEvent):void;
    }
}
